package test;

/**
 * @author kuanggong
 * @date 2025/10/29 12:05
 * @project_name jinx-rpoubakend
 */
public class Counter {

    private int count = 0;
    // 多线程安全递增
    // 如果不添加的话，会对这个成员变量的值就是变得不是2000,可能存在其它的数导致线程不安全
    // 由于springboot是单例的 所以如果有多个进程进来,那么使用sync锁住查询业务的话,可以有效的解决缓存击穿的问题
    public  synchronized void increment(){
        count++;
    }

    public int getCount() {
        return count;
    }


    public static void main(String[] args) throws InterruptedException {
        for (int i = 0; i < 10; i++) {
            exe();
        }

    }

    private static void exe() throws InterruptedException {
        Counter counter = new Counter();

        Thread t1 = new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                counter.increment();
            }
        });

        Thread t2 = new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                counter.increment();
            }
        });

        t1.start();
        t2.start();


        //主线程等待t1 和 t2完成

        t1.join();
        t2.join();
        System.out.println(counter.getCount());
    }


}
